package com.ms.service;

import com.ms.domain.dto.ChangePasswordDTO;
import com.ms.domain.dto.ForgetPasswordDTO;
import com.ms.domain.dto.UserLoginDTO;
import com.ms.domain.dto.UserProfileUpdateDTO;
import com.ms.domain.entity.User;
import com.ms.domain.vo.UserVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface UserService {
    /**
     * 用户登录
     *
     * @param userLoginDTO 用户登录数据
     * @return 用户登录结果
     */
    User login(UserLoginDTO userLoginDTO);

    /**
     * 用户注册
     *
     * @param userLoginDTO 用户注册数据
     */
    void register(UserLoginDTO userLoginDTO);

    /**
     * 重置密码
     *
     * @param changePasswordDTO 用户登录数据
     */
    void changePassword(ChangePasswordDTO changePasswordDTO);

    /**
     * 获取用户信息
     *
     * @param nickname 用户昵称
     */
    User getUserInfoByNickName(String nickname);

    /**
     * 修改用户信息
     * @param userProfileUpdateDTO 用户信息
     */
    void updateUserInfo(UserProfileUpdateDTO userProfileUpdateDTO, MultipartFile avatarFile, MultipartFile backgroundFile);

    /**
     * 获取用户信息
     * @param id 用户id
     * @return 用户公开信息
     */
    UserVO getUserInfoById(Integer id);

    /**
     * 忘记密码
     * @param forgetPasswordDTO 忘记密码信息
     */
    void forgetPassword(ForgetPasswordDTO forgetPasswordDTO);

    /**
     * 获取所有用户
     * @return
     */
    List<User> getAllUsers();
}